package lambda.demo01;

import common.Person;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class SortTest {
    List<Person> persons;

    @Before
    public void before() {
        persons = new ArrayList<>();
        persons.add(new Person("张三", 18));
        persons.add(new Person("李四", 28));
        persons.add(new Person("王五", 15));
        persons.add(new Person("赵六", 36));
    }

    @Test
    public void testSort() {
        // 根据年龄 age 进行排序
        Collections.sort(persons, (o1, o2) -> o1.getAge() - o1.getAge());

        // foreach 循环打印
        for (Person p : persons) {
            System.out.println(p);
        }
    }

    /**
     * 和 testSort() 实现同样的功能, 使用 Lambda 表达式的写法更加简洁而灵活
     */
    @Test
    public void testLambdaSort2() {
        // 根据年龄 age 进行排序
        persons.sort(Comparator.comparing(Person::getAge));
        // foreach 循环打印
        persons.forEach(System.out::println);
    }
}

